#ifndef XMLMESSAGE_HH_
# define XMLMESSAGE_HH_
# include "Network.hh"
#include "../Geom/Vector.hh"
# include <boost/noncopyable.hpp>
# include <QtCore>
# include <QtXml>

/**
 * \brief Minden üzenet osztály közös őse.
 *
 * A leszármazott osztályok példányai állíthatók vele elő, az XML üzenetek
 * alapján. Interfészt biztosít a szerver és a kliens oldali feldolgozáshoz. A
 * konkrét alosztályok közvetlenül is példányosíthatók, küldés céljára.
 */
class Network::XmlMessage: public QObject, private boost::noncopyable {
    Q_OBJECT

    public: static spXmlMessage construct(QDomDocument const& message);

    public: void send_to(XmlSocket& socket) const;

    public: virtual void process_on_client(XmlClient& client);

    public: virtual void process_on_server(XmlServerThread& thread);

    public: virtual QDomDocument to_xml() const = 0;
};



#endif // ndef XMLMESSAGE_HH_
